//package org.zw.zcommon.zapi.zinterceptor;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.web.method.HandlerMethod;
//import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
//import org.zw.zcommon.zapi.zannotation.ZAppLogin;
//import org.zw.zcommon.zcredis.core.ZCRedis;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.io.PrintWriter;
//
///**
// * TODO
// *
// * @author singleton-zw
// * @date 2025/10/19 9:25
// */
//public class ZAuthorizationInterceptor {
//    private static Logger logger = LoggerFactory.getLogger(ZAuthorizationInterceptor.class);
//    public boolean authorization(HttpServletRequest request, HttpServletResponse response, Object handler,String tokenName,ZCRedis redisUtils, String key) {
//        /**
//         * 解决跨域 预请求问题
//         */
//        if(request.getMethod().equals("OPTIONS")){
//            return true;
//        }
//
//        //如果不存在则直接返回 不会空指针
//        if (handler instanceof ResourceHttpRequestHandler) {
//            logger.error("url not ：{}",request.getRequestURI());
//            //{"code":401,"msg":"未授权"}
//            PrintWriter out = null;
//            try {
//                response.setContentType("application/json");
//                response.setContentType("text/html;charset=utf-8");
//                out = response.getWriter();
//                out.println("{\"code\":401,\"msg\":\"未授权\"}");
////                out.write("{\"code\":401,\"msg\":\"未授权\"}");
//                // 强制将缓冲区中的数据发送出去,不必等到缓冲区满
//                out.flush();
//            } catch (IOException e) {
//                e.printStackTrace();
//            } finally {
//                if (out != null) {
//                    out.close();
//                }
//            }
//            return false;
//        }
//
//        ZAppLogin annotation = null;
//        if (handler instanceof HandlerMethod) {
//            annotation = ((HandlerMethod) handler).getMethodAnnotation(ZAppLogin.class);
//        }
//        //System.out.println("-----------"+request.getRequestURI());
//        if (annotation != null) {
//            return true;
//        } else {
//            String token = request.getHeader(tokenName);
//            //如果header中不存在token，则从参数中获取token
//            if ("".equals(token) || token == null) {
//                token = request.getParameter(tokenName);
//            }
//
//            //token为空
//            if ("".equals(token) || token == null) {
//                PrintWriter out = null;
//                try {
//                    response.setContentType("application/json");
//                    response.setContentType("text/html;charset=utf-8");
//                    out = response.getWriter();
//                    out.println("{\"code\":509,\"msg\":\"登录信息为空！\"}");
////                out.write("{\"code\":401,\"msg\":\"未授权\"}");
//                    // 强制将缓冲区中的数据发送出去,不必等到缓冲区满
//                    out.flush();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                } finally {
//                    if (out != null) {
//                        out.close();
//                    }
//                }
//                return false;
//            }
////        //查询token信息
//            Object o = redisUtils.redisTemplate.opsForValue().get(key);
//            if (o == null) {
//                PrintWriter out = null;
//                try {
//                    response.setContentType("application/json");
//                    response.setContentType("text/html;charset=utf-8");
//                    out = response.getWriter();
//                    out.println("{\"code\":509,\"msg\":\"登录信息过期！\"}");
////                out.write("{\"code\":401,\"msg\":\"未授权\"}");
//                    // 强制将缓冲区中的数据发送出去,不必等到缓冲区满
//                    out.flush();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                } finally {
//                    if (out != null) {
//                        out.close();
//                    }
//                }
//                return false;
//            }
////            UserTokenDTO tokenEntity = JSON.parseObject((String) o,
////                    UserTokenDTO.class);
////            //UserTokenEntity tokenEntity = userTokenService.getByToken(token);
////            if (tokenEntity == null) {
////                throw new RenException(ErrorCode.TOKEN_INVALID);
////            }
////            if (tokenEntity == null || tokenEntity.getExpireDate().getTime() < System.currentTimeMillis()) {
////                throw new RenException(ErrorCode.TOKEN_INVALID);
////            }
//            //System.out.println(tokenEntity.getUserId()+"");
////
////        //设置userId到request里，后续根据userId，获取用户信息
//            //TODO 这里需要设定 token 的规则 暂时不考虑
//            // request.setAttribute(USER_KEY, tokenEntity.getUserId() + "");
//
//            return true;
//        }
//    }
//}
